The latter half of the twentieth century has been witness to a phenomenon known as the information revolution. While the information revolution is a historical development broader in scope than any one event or machine, no single device has come to represent the information revolution more than the digital electronic computer. The development of computer systems has surely been a revolution. Each year, computer systems grow faster, store more data, and provide more applications to their users.
Early computer systems were very expensive and difficult to use, capable of being programmed and manipulated by only a handful of highly-educated specialists. The cost of operating such computers was correspondingly high, and they were therefore used for only the most essential tasks. The dynamic which has driven the information revolution is the sustained reduction in the cost of computing. Thus, information which was too expensive to gather, store and process a few years ago, is now economically feasible to manipulate via computer. The reduced cost of information processing drives increasing productivity in a snowballing effect, because product designs, manufacturing processes, resource scheduling, administrative chores, and many other factors, are made more efficient.
The cost of information processing not only includes the cost of computer hardware and software, but perhaps even more significantly, the cost of human resources devoted to gathering and processing information using computer systems. Improvements to the usability of computer hardware and software reduce the cost of human resources associated with information processing, either by reducing the amount of time directly devoted to a particular task by a human operator (user), or by reducing the level of training required of a user in order to achieve proficiency in performing the task. Continued progress of the information revolution requires still further improvements to the usability of computer systems.
Graphical user interfaces (GUIs) have become standard user interfaces for a variety of software applications. Among the standard features of such GUIs are selectable icons for performing an action, toolbars and the like which offer selections to the user, and pull-down menus which offer still further selections. A common characteristic of all these is that the user may select one action from among multiple actions offered using a pointing-device or similar input, without having to type in the name of an action. In theory, this frees the user from the need to remember commands or other selection identifiers.
Generic GUI interfaces are adequate for many applications where the number of tasks that a user must perform are few and the type of application is limited in scope. However, where complexity increases, even the “prompting” provided by GUI interfaces can be inadequate. This is particularly true in the case of processes which involve contributions from a set of multiple individuals, where each individual or group of individuals in the set supports a different part of the overall process. The set may be, for example, all the employees in a particular commercial enterprise, or, for a large enterprise, would more typically be a subset of the employees involved in some particular project or aspect of the company's business which shares common data.
Where different individuals in a set use common data to support some process or processes, there is a tendency to employ a software interface broad enough to cover all individuals in the set. Such a generic GUI will have toolbar, menu and other task selections sufficient to cover the requirements of all individuals. However, most if not all of the individual users use only a portion of the array of task selections available. Therefore, any particular user is typically presented with a large number of task selections which he does not use, although other users may need those selections. This makes the number of selections unduly large, and creates confusion and annoyance among the users. In order to reduce the apparent complexity, some software designers combine different but related task selections into a single generic selection, which may be followed by a menu of options. However, this also has possible adverse ramifications, as the users might have difficulty understanding the correct generic task designation required to reach the actions they want, and the requirement of an options menu can slow user input. Another problem encountered with such generic GUIs is that individual user groups within the set of users may have specialized vocabulary for identifying particular tasks, so that the generic language used to identify a task selection may be difficult for some users to understand.
It is possible to address the problems above mentioned by writing customized software applications for each group of users, or by writing a single customized software application which treats each user group differently and presents different user interfaces, involving different selections, to each group of users. Writing such customized software can consume enormous programming resources.
A need exists for an approach to software interfaces, especially software interfaces for diverse groups of users, which avoids the problems inherent in the prior art approaches.